﻿using Little.Soldier.SWIFT;
using Little.Soldier.SWIFT.Definition;
using System.ComponentModel;

namespace Little.Soldier.SWIFT.Messages.Category0
{
  public class MT047 : SwiftMessage
  {
    private static SwiftMessageDefinition MessageDefinition;
    private static SwiftTagDefinition U0002;
    private static SwiftTagSubItemDefinition U0003;
    private static SwiftTagSequenceDefinition U0004;
    private static SwiftTagDefinition U0005;
    private static SwiftTagSubItemDefinition U0006;
    private static SwiftTagSequenceDefinition U0007;
    private static SwiftTagDefinition U0008;
    private static SwiftTagSubItemDefinition U000E;
    private static SwiftTagSubItemDefinition U000F;
    private static SwiftTagDefinition U0010;
    private static SwiftTagSubItemDefinition U0011;
    private static SwiftTagSubItemDefinition U0012;
    private static SwiftTagSubItemDefinition U0013;
    private static SwiftTagSubItemDefinition U0014;
    private static SwiftTagSubItemDefinition U0015;
    private static SwiftTagSubItemDefinition U0016;
    private static SwiftTagSubItemDefinition U0017;
    private static SwiftTagSubItemDefinition U0018;
    private static SwiftTagSubItemDefinition U0019;
    private static SwiftTagSubItemDefinition U001A;
    private static SwiftTagDefinition U001B;
    private static SwiftTagSubItemDefinition U001C;
    private static SwiftTagSubItemDefinition U001D;
    private static SwiftTagSubItemDefinition U001E;
    private static SwiftTagSubItemDefinition U001F;
    private static SwiftTagSubItemDefinition U007F;
    private static SwiftTagSubItemDefinition U0080;
    private static SwiftTagSubItemDefinition U0081;
    private static SwiftTagSubItemDefinition U0082;
    private static SwiftTagSubItemDefinition U0083;
    private static SwiftTagSubItemDefinition U0084;
    private static SwiftTagDefinition U0086;
    private static SwiftTagSubItemDefinition U0087;
    private static SwiftTagSubItemDefinition U0088;
    private static SwiftTagSubItemDefinition U0089;
    private static SwiftTagSubItemDefinition U008A;
    private static SwiftTagSubItemDefinition U008B;
    private static SwiftTagSubItemDefinition U008C;
    private static SwiftTagSubItemDefinition U008D;
    private static SwiftTagSubItemDefinition U008E;
    private static SwiftTagSubItemDefinition U008F;
    private static SwiftTagSubItemDefinition U0090;

    [Description("ValueDateOrdering")]
    public Tag206 ValueDateOrdering_206
    {
      get
      {
        return new Tag206((SwiftElement) this, 0, (SwiftDefinitionElement) MT047.U0002);
      }
    }

    [Description("ValueDateOrdering")]
    public Tag206 Tag206_ValueDateOrdering
    {
      get
      {
        return this.ValueDateOrdering_206;
      }
    }

    [Description("Delivery Subset, Priority and Message Type Service code list")]
    public MT047.PriorityAndDeliverySubset_SequenceClass PriorityAndDeliverySubset_Sequence
    {
      get
      {
        return new MT047.PriorityAndDeliverySubset_SequenceClass((SwiftElement) this, 0, false);
      }
    }

    public MT047()
      : base(true)
    {
    }

    public MT047(SwiftMessage message)
      : base(message)
    {
    }

    internal override SwiftMessageDefinition MsgDefinition()
    {
      return MT047.MessageDefinition;
    }

    protected override void InitSwiftMessageDefinition()
    {
      MT047.MessageDefinition = new SwiftMessageDefinition("MT047", "Delivery Instructions Redefinition Request");
      MT047.U0002 = new SwiftTagDefinition("ValueDateOrdering_206", "ValueDateOrdering");
      MT047.U0002.TagName = "{206:";
      MT047.U0003 = new SwiftTagSubItemDefinition("ValueDateOrdering", "ValueDateOrdering");
      MT047.U0002.Elements.Add((SwiftDefinitionElement) MT047.U0003);
      MT047.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT047.U0002);
      MT047.U0004 = new SwiftTagSequenceDefinition("PriorityAndDeliverySubset_Sequence", "Delivery Subset, Priority and Message Type Service code list");
      MT047.U0005 = new SwiftTagDefinition("DeliverySubsetName_339", "Name assigned by the user to a delivery subset");
      MT047.U0005.TagName = "{339:";
      MT047.U0006 = new SwiftTagSubItemDefinition("DeliverySubsetName", "Name assigned by the user to a delivery subset");
      MT047.U0005.Elements.Add((SwiftDefinitionElement) MT047.U0006);
      MT047.U0004.Elements.Add((SwiftDefinitionElement) MT047.U0005);
      MT047.U0007 = new SwiftTagSequenceDefinition("PriorityAndMessageTypeService_Sequence", "Priority and Message Type Service code list");
      MT047.U0008 = new SwiftTagDefinition("PriorityCategory_344", "PriorityOrdering");
      MT047.U0008.TagName = "{344:";
      MT047.U000E = new SwiftTagSubItemDefinition("Priority", "Priority");
      MT047.U0008.Elements.Add((SwiftDefinitionElement) MT047.U000E);
      MT047.U000F = new SwiftTagSubItemDefinition("MessageCategory", "");
      MT047.U000F.Mandatory = false;
      MT047.U0008.Elements.Add((SwiftDefinitionElement) MT047.U000F);
      MT047.U0007.Elements.Add((SwiftDefinitionElement) MT047.U0008);
      MT047.U0010 = new SwiftTagDefinition("MessageTypeServiceCodeList_345", "Message Type Service Code List");
      MT047.U0010.TagName = "{345:";
      MT047.U0010.Mandatory = false;
      MT047.U0011 = new SwiftTagSubItemDefinition("Line1", "Message Type 1");
      MT047.U0010.Elements.Add((SwiftDefinitionElement) MT047.U0011);
      MT047.U0012 = new SwiftTagSubItemDefinition("Line2", "Message Type 2");
      MT047.U0012.Mandatory = false;
      MT047.U0010.Elements.Add((SwiftDefinitionElement) MT047.U0012);
      MT047.U0013 = new SwiftTagSubItemDefinition("Line3", "Message Type 3");
      MT047.U0013.Mandatory = false;
      MT047.U0010.Elements.Add((SwiftDefinitionElement) MT047.U0013);
      MT047.U0014 = new SwiftTagSubItemDefinition("Line4", "Message Type 4");
      MT047.U0014.Mandatory = false;
      MT047.U0010.Elements.Add((SwiftDefinitionElement) MT047.U0014);
      MT047.U0015 = new SwiftTagSubItemDefinition("Line5", "Message Type 5");
      MT047.U0015.Mandatory = false;
      MT047.U0010.Elements.Add((SwiftDefinitionElement) MT047.U0015);
      MT047.U0016 = new SwiftTagSubItemDefinition("Line6", "Message Type 6");
      MT047.U0016.Mandatory = false;
      MT047.U0010.Elements.Add((SwiftDefinitionElement) MT047.U0016);
      MT047.U0017 = new SwiftTagSubItemDefinition("Line7", "Message Type 7");
      MT047.U0017.Mandatory = false;
      MT047.U0010.Elements.Add((SwiftDefinitionElement) MT047.U0017);
      MT047.U0018 = new SwiftTagSubItemDefinition("Line8", "Message Type 8");
      MT047.U0018.Mandatory = false;
      MT047.U0010.Elements.Add((SwiftDefinitionElement) MT047.U0018);
      MT047.U0019 = new SwiftTagSubItemDefinition("Line9", "Message Type 9");
      MT047.U0019.Mandatory = false;
      MT047.U0010.Elements.Add((SwiftDefinitionElement) MT047.U0019);
      MT047.U001A = new SwiftTagSubItemDefinition("Line10", "Message Type 10");
      MT047.U001A.Mandatory = false;
      MT047.U0010.Elements.Add((SwiftDefinitionElement) MT047.U001A);
      MT047.U0007.Elements.Add((SwiftDefinitionElement) MT047.U0010);
      MT047.U001B = new SwiftTagDefinition("BranchCodeList_346", "Branch code list");
      MT047.U001B.TagName = "{346:";
      MT047.U001B.Mandatory = false;
      MT047.U001C = new SwiftTagSubItemDefinition("Line1", "Message Type 1");
      MT047.U001B.Elements.Add((SwiftDefinitionElement) MT047.U001C);
      MT047.U001D = new SwiftTagSubItemDefinition("Line2", "Message Type 2");
      MT047.U001D.Mandatory = false;
      MT047.U001B.Elements.Add((SwiftDefinitionElement) MT047.U001D);
      MT047.U001E = new SwiftTagSubItemDefinition("Line3", "Message Type 3");
      MT047.U001E.Mandatory = false;
      MT047.U001B.Elements.Add((SwiftDefinitionElement) MT047.U001E);
      MT047.U001F = new SwiftTagSubItemDefinition("Line4", "Message Type 4");
      MT047.U001F.Mandatory = false;
      MT047.U001B.Elements.Add((SwiftDefinitionElement) MT047.U001F);
      MT047.U007F = new SwiftTagSubItemDefinition("Line5", "Message Type 5");
      MT047.U007F.Mandatory = false;
      MT047.U001B.Elements.Add((SwiftDefinitionElement) MT047.U007F);
      MT047.U0080 = new SwiftTagSubItemDefinition("Line6", "Message Type 6");
      MT047.U0080.Mandatory = false;
      MT047.U001B.Elements.Add((SwiftDefinitionElement) MT047.U0080);
      MT047.U0081 = new SwiftTagSubItemDefinition("Line7", "Message Type 7");
      MT047.U0081.Mandatory = false;
      MT047.U001B.Elements.Add((SwiftDefinitionElement) MT047.U0081);
      MT047.U0082 = new SwiftTagSubItemDefinition("Line8", "Message Type 8");
      MT047.U0082.Mandatory = false;
      MT047.U001B.Elements.Add((SwiftDefinitionElement) MT047.U0082);
      MT047.U0083 = new SwiftTagSubItemDefinition("Line9", "Message Type 9");
      MT047.U0083.Mandatory = false;
      MT047.U001B.Elements.Add((SwiftDefinitionElement) MT047.U0083);
      MT047.U0084 = new SwiftTagSubItemDefinition("Line10", "Message Type 10");
      MT047.U0084.Mandatory = false;
      MT047.U001B.Elements.Add((SwiftDefinitionElement) MT047.U0084);
      MT047.U0007.Elements.Add((SwiftDefinitionElement) MT047.U001B);
      MT047.U0086 = new SwiftTagDefinition("FieldList_347", "Field list");
      MT047.U0086.TagName = "{347:";
      MT047.U0086.Mandatory = false;
      MT047.U0087 = new SwiftTagSubItemDefinition("Line1", "Message Type 1");
      MT047.U0086.Elements.Add((SwiftDefinitionElement) MT047.U0087);
      MT047.U0088 = new SwiftTagSubItemDefinition("Line2", "Message Type 2");
      MT047.U0088.Mandatory = false;
      MT047.U0086.Elements.Add((SwiftDefinitionElement) MT047.U0088);
      MT047.U0089 = new SwiftTagSubItemDefinition("Line3", "Message Type 3");
      MT047.U0089.Mandatory = false;
      MT047.U0086.Elements.Add((SwiftDefinitionElement) MT047.U0089);
      MT047.U008A = new SwiftTagSubItemDefinition("Line4", "Message Type 4");
      MT047.U008A.Mandatory = false;
      MT047.U0086.Elements.Add((SwiftDefinitionElement) MT047.U008A);
      MT047.U008B = new SwiftTagSubItemDefinition("Line5", "Message Type 5");
      MT047.U008B.Mandatory = false;
      MT047.U0086.Elements.Add((SwiftDefinitionElement) MT047.U008B);
      MT047.U008C = new SwiftTagSubItemDefinition("Line6", "Message Type 6");
      MT047.U008C.Mandatory = false;
      MT047.U0086.Elements.Add((SwiftDefinitionElement) MT047.U008C);
      MT047.U008D = new SwiftTagSubItemDefinition("Line7", "Message Type 7");
      MT047.U008D.Mandatory = false;
      MT047.U0086.Elements.Add((SwiftDefinitionElement) MT047.U008D);
      MT047.U008E = new SwiftTagSubItemDefinition("Line8", "Message Type 8");
      MT047.U008E.Mandatory = false;
      MT047.U0086.Elements.Add((SwiftDefinitionElement) MT047.U008E);
      MT047.U008F = new SwiftTagSubItemDefinition("Line9", "Message Type 9");
      MT047.U008F.Mandatory = false;
      MT047.U0086.Elements.Add((SwiftDefinitionElement) MT047.U008F);
      MT047.U0090 = new SwiftTagSubItemDefinition("Line10", "Message Type 10");
      MT047.U0090.Mandatory = false;
      MT047.U0086.Elements.Add((SwiftDefinitionElement) MT047.U0090);
      MT047.U0007.Elements.Add((SwiftDefinitionElement) MT047.U0086);
      MT047.U0004.Elements.Add((SwiftDefinitionElement) MT047.U0007);
      MT047.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT047.U0004);
    }

    public class PriorityAndDeliverySubset_SequenceClass : SwiftTagSequence
    {
      internal override SwiftDefinitionElement Definition
      {
        get
        {
          return (SwiftDefinitionElement) MT047.U0004;
        }
      }

      [Description("Name assigned by the user to a delivery subset")]
      public Tag339 DeliverySubsetName_339
      {
        get
        {
          return new Tag339((SwiftElement) this, 0, (SwiftDefinitionElement) MT047.U0005);
        }
      }

      [Description("Name assigned by the user to a delivery subset")]
      public Tag339 Tag339_DeliverySubsetName
      {
        get
        {
          return this.DeliverySubsetName_339;
        }
      }

      [Description("Priority and Message Type Service code list")]
      public MT047.PriorityAndDeliverySubset_SequenceClass.PriorityAndMessageTypeService_SequenceClass PriorityAndMessageTypeService_Sequence
      {
        get
        {
          return new MT047.PriorityAndDeliverySubset_SequenceClass.PriorityAndMessageTypeService_SequenceClass((SwiftElement) this, 0, false);
        }
      }

      internal PriorityAndDeliverySubset_SequenceClass(SwiftElement parent, int index, bool createTags)
        : base(parent, index, createTags)
      {
      }

      public class PriorityAndMessageTypeService_SequenceClass : SwiftTagSequence
      {
        internal override SwiftDefinitionElement Definition
        {
          get
          {
            return (SwiftDefinitionElement) MT047.U0007;
          }
        }

        [Description("PriorityOrdering")]
        public Tag344 PriorityCategory_344
        {
          get
          {
            return new Tag344((SwiftElement) this, 0, (SwiftDefinitionElement) MT047.U0008);
          }
        }

        [Description("PriorityOrdering")]
        public Tag344 Tag344_PriorityCategory
        {
          get
          {
            return this.PriorityCategory_344;
          }
        }

        [Description("Message Type Service Code List")]
        public MT047.PriorityAndDeliverySubset_SequenceClass.PriorityAndMessageTypeService_SequenceClass.Tag345 MessageTypeServiceCodeList_345
        {
          get
          {
            return new MT047.PriorityAndDeliverySubset_SequenceClass.PriorityAndMessageTypeService_SequenceClass.Tag345((SwiftElement) this, 0, (SwiftDefinitionElement) MT047.U0010);
          }
        }

        [Description("Message Type Service Code List")]
        public MT047.PriorityAndDeliverySubset_SequenceClass.PriorityAndMessageTypeService_SequenceClass.Tag345 Tag345_MessageTypeServiceCodeList
        {
          get
          {
            return this.MessageTypeServiceCodeList_345;
          }
        }

        [Description("Branch code list")]
        public MT047.PriorityAndDeliverySubset_SequenceClass.PriorityAndMessageTypeService_SequenceClass.Tag346 BranchCodeList_346
        {
          get
          {
            return new MT047.PriorityAndDeliverySubset_SequenceClass.PriorityAndMessageTypeService_SequenceClass.Tag346((SwiftElement) this, 0, (SwiftDefinitionElement) MT047.U001B);
          }
        }

        [Description("Branch code list")]
        public MT047.PriorityAndDeliverySubset_SequenceClass.PriorityAndMessageTypeService_SequenceClass.Tag346 Tag346_BranchCodeList
        {
          get
          {
            return this.BranchCodeList_346;
          }
        }

        [Description("Field list")]
        public MT047.PriorityAndDeliverySubset_SequenceClass.PriorityAndMessageTypeService_SequenceClass.Tag347 FieldList_347
        {
          get
          {
            return new MT047.PriorityAndDeliverySubset_SequenceClass.PriorityAndMessageTypeService_SequenceClass.Tag347((SwiftElement) this, 0, (SwiftDefinitionElement) MT047.U0086);
          }
        }

        [Description("Field list")]
        public MT047.PriorityAndDeliverySubset_SequenceClass.PriorityAndMessageTypeService_SequenceClass.Tag347 Tag347_FieldList
        {
          get
          {
            return this.FieldList_347;
          }
        }

        internal PriorityAndMessageTypeService_SequenceClass(SwiftElement parent, int index, bool createTags)
          : base(parent, index, createTags)
        {
        }

        public class Tag345 : SwiftTagWrapper
        {
          public string Value
          {
            get
            {
              return this.GetValue();
            }
            set
            {
              this.SetValue("345", value);
            }
          }

          internal Tag345(SwiftElement parent, int index, SwiftDefinitionElement definition)
            : base(parent, index, definition)
          {
          }
        }

        public class Tag346 : SwiftTagWrapper
        {
          public string Value
          {
            get
            {
              return this.GetValue();
            }
            set
            {
              this.SetValue("346", value);
            }
          }

          internal Tag346(SwiftElement parent, int index, SwiftDefinitionElement definition)
            : base(parent, index, definition)
          {
          }
        }

        public class Tag347 : SwiftTagWrapper
        {
          public string Value
          {
            get
            {
              return this.GetValue();
            }
            set
            {
              this.SetValue("347", value);
            }
          }

          internal Tag347(SwiftElement parent, int index, SwiftDefinitionElement definition)
            : base(parent, index, definition)
          {
          }
        }
      }
    }
  }
}
